home *** CD-ROM | disk | FTP | other *** search
- Article 194 of alt.sources.amiga:
- Path: usenet.ee.pdx.edu!reed!batcomputer!caen!zaphod.mps.ohio-state.edu!math.ohio-state.edu!pacific.mps.ohio-state.edu!cis.ohio-state.edu!news.sei.cmu.edu!bb3.andrew.cmu.edu!andrew.cmu.edu!eb15+
- From: "Edward D. Berger" <eb15+@andrew.cmu.edu>
- Newsgroups: alt.sources.amiga
- Subject: GCC inline header for Retina Board Programming
- Date: Wed, 26 May 1993 21:18:18 -0400
- Organization: Pittsburgh Supercomputing Center, Carnegie Mellon, Pittsburgh, PA
- Lines: 568
- Message-ID: <Ig11POm00WB4EI6UZl@andrew.cmu.edu>
- NNTP-Posting-Host: po4.andrew.cmu.edu
-
- The Retina is a very nice ZorroII graphics board for the Amiga, and it comes
- with programming support for SAS/C, which also works with the current
- registered version of DICE, but not Markus Wild's port of GCC. Since I want
- to be able to program my Retina board with GCC, I decided to create this
- "<inline/retina.h>" file, and found I had to hack on the included prototype
- and fd file before I could compile a simple program. I'm posting this here
- to help out other programmers with GCC. This is mostly untested, except
- for the one demo program Mark Thomas posted to comp.sys.amiga.programmer.
- It works fine for that.
-
- >> BEGIN INCLUDE FILE <<
- /* This is an inline header for programming the Retina Graphics card with */
- /* GCC It is posted to 'alt.sources.amiga' as it is basically untested. */
- /* You still need to include the "retina/retina.h" file in your source */
- /* before including this inline header. The Retina Board comes with */
- /* developer software in every package. Thank you MacroSystem! */
-
- /*
- * <inline/retina.h> $VER: 1.2 (26-5-93) ALPHA
- * generated by EDB 5-26-93 from version 1.2 retina_lib.fd
- * notes: This was created by hacking retina_lib.fd and retina_protos.h
- * until they worked properly with the conv.p perl script
- * distributed in Markus Wild's GCC 2.3.3 port to Amiga OS
- * The fd file was used as the arbiter when conflicts arose.
- * General problems were upper case register names: use a0 not A0...
- * FD functions had less parameters than the PROTOS. Huh??????
- * This worked with the 'demo' program that was posted to
- * comp.sys.amiga.programmer, and that is as far as I've tested it.
- * Install in your gcc:os-include/inline directory, and use this
- * instead of the 'pragmas' and 'clib/protos' include files
- */
-
- #ifndef _RETINA_PROTOS_H
- #define _RETINA_PROTOS_H
-
- #include <sys/cdefs.h>
- #include <inline/stubs.h>
-
- __BEGIN_DECLS
- #ifndef BASE_EXT_DECL
- #define BASE_EXT_DECL extern struct Library * RetinaBase;
- #endif
- #ifndef BASE_PAR_DECL
- #define BASE_PAR_DECL
- #define BASE_PAR_DECL0 void
- #endif
- #ifndef BASE_NAME
- #define BASE_NAME RetinaBase
- #endif
-
- static __inline UBYTE *
- Retina_AllocBitMap (BASE_PAR_DECL UWORD width,UWORD height,
- UWORD bytesPerPixel,ULONG flags)
- {
- BASE_EXT_DECL
- register UBYTE * _res __asm("d0");
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register UWORD d0 __asm("d0") = width;
- register UWORD d1 __asm("d1") = height;
- register UWORD d2 __asm("d2") = bytesPerPixel;
- register ULONG d3 __asm("d3") = flags;
- __asm __volatile ("jsr a6@(-0xde)"
- : "=r" (_res)
- : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
- : "a0","a1","d0","d1","d2","d3", "memory");
- return _res;
- }
- static __inline ULONG
- Retina_AvailMem (BASE_PAR_DECL ULONG flags)
- {
- BASE_EXT_DECL
- register ULONG _res __asm("d0");
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register ULONG d0 __asm("d0") = flags;
- __asm __volatile ("jsr a6@(-0xea)"
- : "=r" (_res)
- : "r" (a6), "r" (d0)
- : "a0","a1","d0","d1", "memory");
- return _res;
- }
- static __inline void
- Retina_Circle (BASE_PAR_DECL struct RetinaScreen *screen,
- UWORD x,UWORD y,UWORD r)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register UWORD d0 __asm("d0") = x;
- register UWORD d1 __asm("d1") = y;
- register UWORD d2 __asm("d2") = r;
- __asm __volatile ("jsr a6@(-0x108)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2)
- : "a0","a1","d0","d1","d2", "memory");
- }
- static __inline void
- Retina_ClearScreen (BASE_PAR_DECL struct RetinaScreen *screen)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- __asm __volatile ("jsr a6@(-0xf0)"
- : /* no output */
- : "r" (a6), "r" (a0)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline void
- Retina_CloseScreen (BASE_PAR_DECL struct RetinaScreen *screen)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- __asm __volatile ("jsr a6@(-0xc0)"
- : /* no output */
- : "r" (a6), "r" (a0)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline void
- Retina_CopyRect (BASE_PAR_DECL struct RetinaScreen *srcScreen,UWORD srcX,
- UWORD srcY,struct RetinaScreen *destScreen,UWORD destX,
- UWORD destY,UWORD sizeX,UWORD sizeY)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = srcScreen;
- register UWORD d0 __asm("d0") = srcX;
- register UWORD d1 __asm("d1") = srcY;
- register struct RetinaScreen *a1 __asm("a1") = destScreen;
- register UWORD d2 __asm("d2") = destX;
- register UWORD d3 __asm("d3") = destY;
- register UWORD d4 __asm("d4") = sizeX;
- register UWORD d5 __asm("d5") = sizeY;
- __asm __volatile ("jsr a6@(-0x14a)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (a1), "r" (d2), "r" (d3), \
- "r" (d4), "r" (d5)
- : "a0","a1","d0","d1","d2","d3","d4","d5", "memory");
- }
- static __inline void
- Retina_DisownRetina (BASE_PAR_DECL0)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- __asm __volatile ("jsr a6@(-0x168)"
- : /* no output */
- : "r" (a6)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline struct RetinaMonitor *
- Retina_FindMonitor (BASE_PAR_DECL ULONG monitorID)
- {
- BASE_EXT_DECL
- register struct RetinaMonitor * _res __asm("d0");
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register ULONG d0 __asm("d0") = monitorID;
- __asm __volatile ("jsr a6@(-0xae)"
- : "=r" (_res)
- : "r" (a6), "r" (d0)
- : "a0","a1","d0","d1", "memory");
- return _res;
- }
- static __inline void
- Retina_FreeBitMap (BASE_PAR_DECL UBYTE *bitmap)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register UBYTE *a0 __asm("a0") = bitmap;
- __asm __volatile ("jsr a6@(-0xe4)"
- : /* no output */
- : "r" (a6), "r" (a0)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline ULONG
- Retina_GetAPen (BASE_PAR_DECL struct RetinaScreen *screen)
- {
- BASE_EXT_DECL
- register ULONG _res __asm("d0");
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- __asm __volatile ("jsr a6@(-0x132)"
- : "=r" (_res)
- : "r" (a6), "r" (a0)
- : "a0","a1","d0","d1", "memory");
- return _res;
- }
- static __inline ULONG
- Retina_GetDefaultScreenInfo (BASE_PAR_DECL ULONG defaultID,
- struct DefaultScreenInfo * buffer)
- {
- BASE_EXT_DECL
- register ULONG _res __asm("d0");
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register ULONG d0 __asm("d0") = defaultID;
- register struct DefaultScreenInfo * a0 __asm("a0") = buffer;
- __asm __volatile ("jsr a6@(-0x5a)"
- : "=r" (_res)
- : "r" (a6), "r" (d0), "r" (a0)
- : "a0","a1","d0","d1", "memory");
- return _res;
- }
- static __inline void
- Retina_Line (BASE_PAR_DECL struct RetinaScreen *screen,
- UWORD x1,UWORD y1,UWORD x2,UWORD y2)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register UWORD d0 __asm("d0") = x1;
- register UWORD d1 __asm("d1") = y1;
- register UWORD d2 __asm("d2") = x2;
- register UWORD d3 __asm("d3") = y2;
- __asm __volatile ("jsr a6@(-0x10e)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
- : "a0","a1","d0","d1","d2","d3", "memory");
- }
- static __inline void
- Retina_LoadPalette (BASE_PAR_DECL struct RetinaScreen *screen,
- UWORD first,UWORD count,UBYTE *table)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register UWORD d0 __asm("d0") = first;
- register UWORD d1 __asm("d1") = count;
- register UBYTE *a1 __asm("a1") = table;
- __asm __volatile ("jsr a6@(-0x8a)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (a1)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline void
- Retina_MoveSprite (BASE_PAR_DECL struct RetinaScreen *screen,
- UWORD x,UWORD y)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register UWORD d0 __asm("d0") = x;
- register UWORD d1 __asm("d1") = y;
- __asm __volatile ("jsr a6@(-0x126)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline struct RetinaMonitor *
- Retina_NextMonitor (BASE_PAR_DECL struct RetinaMonitor *monitor)
- {
- BASE_EXT_DECL
- register struct RetinaMonitor * _res __asm("d0");
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaMonitor *a0 __asm("a0") = monitor;
- __asm __volatile ("jsr a6@(-0xb4)"
- : "=r" (_res)
- : "r" (a6), "r" (a0)
- : "a0","a1","d0","d1", "memory");
- return _res;
- }
- static __inline struct RetinaScreen *
- Retina_OpenScreen (BASE_PAR_DECL UWORD width,UWORD height,
- ULONG monitorID,ULONG flags,APTR tags)
- {
- BASE_EXT_DECL
- register struct RetinaScreen * _res __asm("d0");
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register UWORD d0 __asm("d0") = width;
- register UWORD d1 __asm("d1") = height;
- register ULONG d2 __asm("d2") = monitorID;
- register ULONG d3 __asm("d3") = flags;
- register APTR a0 __asm("a0") = tags;
- __asm __volatile ("jsr a6@(-0xba)"
- : "=r" (_res)
- : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (a0)
- : "a0","a1","d0","d1","d2","d3", "memory");
- return _res;
- }
- static __inline void
- Retina_OwnRetina (BASE_PAR_DECL0)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- __asm __volatile ("jsr a6@(-0x162)"
- : /* no output */
- : "r" (a6)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline ULONG
- Retina_ReadPixel (BASE_PAR_DECL struct RetinaScreen *screen,
- UWORD x,UWORD y)
- {
- BASE_EXT_DECL
- register ULONG _res __asm("d0");
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register UWORD d0 __asm("d0") = x;
- register UWORD d1 __asm("d1") = y;
- __asm __volatile ("jsr a6@(-0x138)"
- : "=r" (_res)
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
- : "a0","a1","d0","d1", "memory");
- return _res;
- }
- static __inline void
- Retina_ReadRect (BASE_PAR_DECL UBYTE *mem,UWORD memX,UWORD memY,
- UWORD memWidth,ULONG mode,struct RetinaScreen *screen,
- UWORD screenX,UWORD screenY,UWORD sizeX,UWORD sizeY,UBYTE *mem2)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register UBYTE *a0 __asm("a0") = mem;
- register UWORD d0 __asm("d0") = memX;
- register UWORD d1 __asm("d1") = memY;
- register UWORD d2 __asm("d2") = memWidth;
- register ULONG d3 __asm("d3") = mode;
- register struct RetinaScreen *a1 __asm("a1") = screen;
- register UWORD d4 __asm("d4") = screenX;
- register UWORD d5 __asm("d5") = screenY;
- register UWORD d6 __asm("d6") = sizeX;
- register UWORD d7 __asm("d7") = sizeY;
- register UBYTE *a2 __asm("a2") = mem2;
- __asm __volatile ("jsr a6@(-0x144)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (a1), \
- "r" (d4), "r" (d5), "r" (d6), "r" (d7), "r" (a2)
- : "a0","a1","a2","d0","d1","d2","d3","d4","d5","d6","d7", "memory");
- }
- static __inline void
- Retina_RectFill (BASE_PAR_DECL struct RetinaScreen *screen,UWORD x1,UWORD y1,
- UWORD x2,UWORD y2)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register UWORD d0 __asm("d0") = x1;
- register UWORD d1 __asm("d1") = y1;
- register UWORD d2 __asm("d2") = x2;
- register UWORD d3 __asm("d3") = y2;
- __asm __volatile ("jsr a6@(-0xf6)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
- : "a0","a1","d0","d1","d2","d3", "memory");
- }
- static __inline void
- Retina_ScreenToBack (BASE_PAR_DECL struct RetinaScreen *screen)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- __asm __volatile ("jsr a6@(-0x114)"
- : /* no output */
- : "r" (a6), "r" (a0)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline void
- Retina_ScreenToFront (BASE_PAR_DECL struct RetinaScreen *screen)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- __asm __volatile ("jsr a6@(-0xc6)"
- : /* no output */
- : "r" (a6), "r" (a0)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline void
- Retina_SetAPen (BASE_PAR_DECL struct RetinaScreen *screen,ULONG color)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register ULONG d0 __asm("d0") = color;
- __asm __volatile ("jsr a6@(-0xfc)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline void
- Retina_SetDrMd (BASE_PAR_DECL struct RetinaScreen *screen,ULONG mode)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register ULONG d0 __asm("d0") = mode;
- __asm __volatile ("jsr a6@(-0x15c)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline void
- Retina_SetPalette (BASE_PAR_DECL struct RetinaScreen *screen,UWORD index,
- UBYTE red,UBYTE green,UBYTE blue)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register UWORD d0 __asm("d0") = index;
- register UBYTE d1 __asm("d1") = red;
- register UBYTE d2 __asm("d2") = green;
- register UBYTE d3 __asm("d3") = blue;
- __asm __volatile ("jsr a6@(-0x90)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
- : "a0","a1","d0","d1","d2","d3", "memory");
- }
- static __inline void
- Retina_SetPixel (BASE_PAR_DECL struct RetinaScreen *screen,UWORD x,
- UWORD y,ULONG color)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register UWORD d0 __asm("d0") = x;
- register UWORD d1 __asm("d1") = y;
- register ULONG d2 __asm("d2") = color;
- __asm __volatile ("jsr a6@(-0x156)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2)
- : "a0","a1","d0","d1","d2", "memory");
- }
- static __inline UBYTE *
- Retina_SetSegmentPtr (BASE_PAR_DECL UBYTE *address)
- {
- BASE_EXT_DECL
- register UBYTE * _res __asm("d0");
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register UBYTE *a0 __asm("a0") = address;
- __asm __volatile ("jsr a6@(-0x96)"
- : "=r" (_res)
- : "r" (a6), "r" (a0)
- : "a0","a1","d0","d1", "memory");
- return _res;
- }
- static __inline ULONG
- Retina_SetSprite (BASE_PAR_DECL struct RetinaScreen *screen,ULONG *data,
- UWORD height,APTR tags)
- {
- BASE_EXT_DECL
- register ULONG _res __asm("d0");
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register ULONG *a1 __asm("a1") = data;
- register UWORD d0 __asm("d0") = height;
- register APTR a2 __asm("a2") = tags;
- __asm __volatile ("jsr a6@(-0x120)"
- : "=r" (_res)
- : "r" (a6), "r" (a0), "r" (a1), "r" (d0), "r" (a2)
- : "a0","a1","a2","d0","d1", "memory");
- return _res;
- }
- static __inline void
- Retina_SpriteFunction (BASE_PAR_DECL struct RetinaScreen *screen,APTR tags)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register APTR a1 __asm("a1") = tags;
- __asm __volatile ("jsr a6@(-0x12c)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (a1)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline void
- Retina_SwapBitMap (BASE_PAR_DECL struct RetinaScreen *screen)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- __asm __volatile ("jsr a6@(-0x11a)"
- : /* no output */
- : "r" (a6), "r" (a0)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline void
- Retina_SwapRect (BASE_PAR_DECL UBYTE *mem,UWORD memX,UWORD memY,
- UWORD memWidth,ULONG mode,struct RetinaScreen *screen,UWORD
- screenX,UWORD screenY,UWORD sizeX,UWORD sizeY,UBYTE *mem2)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register UBYTE *a0 __asm("a0") = mem;
- register UWORD d0 __asm("d0") = memX;
- register UWORD d1 __asm("d1") = memY;
- register UWORD d2 __asm("d2") = memWidth;
- register ULONG d3 __asm("d3") = mode;
- register struct RetinaScreen *a1 __asm("a1") = screen;
- register UWORD d4 __asm("d4") = screenX;
- register UWORD d5 __asm("d5") = screenY;
- register UWORD d6 __asm("d6") = sizeX;
- register UWORD d7 __asm("d7") = sizeY;
- register UBYTE *a2 __asm("a2") = mem2;
- __asm __volatile ("jsr a6@(-0x150)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (a1),\
- "r" (d4), "r" (d5), "r" (d6), "r" (d7), "r" (a2)
- : "a0","a1","a2","d0","d1","d2","d3","d4","d5","d6","d7", "memory");
- }
- static __inline BOOL
- Retina_WriteBitMap (BASE_PAR_DECL struct RetinaScreen *screen,
- struct BitMap *bitmap,UBYTE *palette,UWORD destX,
- UWORD destY,UWORD width,ULONG mode)
- {
- BASE_EXT_DECL
- register BOOL _res __asm("d0");
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register struct BitMap *a1 __asm("a1") = bitmap;
- register UBYTE *a2 __asm("a2") = palette;
- register UWORD d0 __asm("d0") = destX;
- register UWORD d1 __asm("d1") = destY;
- register UWORD d2 __asm("d2") = width;
- register ULONG d3 __asm("d3") = mode;
- __asm __volatile ("jsr a6@(-0x36)"
- : "=r" (_res)
- : "r" (a6), "r" (a0), "r" (a1), "r" (a2), "r" (d0), "r" (d1),\
- "r" (d2), "r" (d3)
- : "a0","a1","a2","d0","d1","d2","d3", "memory");
- return _res;
- }
- static __inline void
- Retina_WritePixel (BASE_PAR_DECL struct RetinaScreen *screen,UWORD x,UWORD y)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register struct RetinaScreen *a0 __asm("a0") = screen;
- register UWORD d0 __asm("d0") = x;
- register UWORD d1 __asm("d1") = y;
- __asm __volatile ("jsr a6@(-0x102)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
- : "a0","a1","d0","d1", "memory");
- }
- static __inline void
- Retina_WriteRect (BASE_PAR_DECL UBYTE *mem,UWORD memX,UWORD memY,
- UWORD memWidth,ULONG mode,struct RetinaScreen *screen,
- UWORD screenX,UWORD screenY,UWORD sizeX,UWORD sizeY,UBYTE *mem2)
- {
- BASE_EXT_DECL
- register struct Library *a6 __asm("a6") = BASE_NAME;
- register UBYTE *a0 __asm("a0") = mem;
- register UWORD d0 __asm("d0") = memX;
- register UWORD d1 __asm("d1") = memY;
- register UWORD d2 __asm("d2") = memWidth;
- register ULONG d3 __asm("d3") = mode;
- register struct RetinaScreen *a1 __asm("a1") = screen;
- register UWORD d4 __asm("d4") = screenX;
- register UWORD d5 __asm("d5") = screenY;
- register UWORD d6 __asm("d6") = sizeX;
- register UWORD d7 __asm("d7") = sizeY;
- register UBYTE *a2 __asm("a2") = mem2;
- __asm __volatile ("jsr a6@(-0x13e)"
- : /* no output */
- : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2), "r" (d3), "r" (a1),\
- "r" (d4), "r" (d5), "r" (d6), "r" (d7), "r" (a2)
- : "a0","a1","a2","d0","d1","d2","d3","d4","d5","d6","d7", "memory");
- }
- #undef BASE_EXT_DECL
- #undef BASE_PAR_DECL
- #undef BASE_PAR_DECL0
- #undef BASE_NAME
-
- __END_DECLS
-
- #endif /* _RETINA_PROTOS_H */
-
- >>>> END INCLUDED FILE <<<<
-
- -Ed Berger
- eb15@andrew.cmu.edu
-
-
-